#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>

#include <dirent.h>

#define BUFFER_SIZE 128
int main()
{
    const char * name = "/home/257class/257-operatiion-system/FileIO/testDIR/music";


    /* getcwd()： 用于获取当前工作目录的路径名 
    char *getcwd(char *buf, size_t size);
    其中，buf 是一个指向存储当前工作目录绝对路径名的缓冲区的指针，size 是缓冲区的大小

    当调用 getcwd() 函数时，它会将当前工作目录的绝对路径名（包括结束的 null 字符）复制到 buf 指向的缓冲区中，并返回指向该缓冲区的指针。
    如果 buf 为 NULL，则 getcwd() 会自动分配足够的空间来存储路径名，但需要手动释放内存。如果缓冲区大小小于路径名长度，getcwd() 可能会截断路径名。

    */
    char buffer[BUFFER_SIZE] = { 0 };
    getcwd(buffer, BUFFER_SIZE - 1);
    printf("buffer:%s\n", buffer);



    DIR * dir = opendir(name);
    if (dir == NULL)
    {
        perror("opendir error");
        return -1;
    }

    /* 文件打开成功 */
    struct dirent * musicdir = NULL;
    while ((musicdir = readdir(dir)) != NULL)
    {
        if (musicdir->d_type != DT_DIR)
        {
            printf("d_type:%d,\td_name:%s\n", musicdir->d_type, musicdir->d_name);
        }        
    }


    /* 关闭文件夹 */
    closedir(dir);

    return 0;
}